From 0a446e81ed77c20aa87563d45ef0ef8f5fa283d8 Mon Sep 17 00:00:00 2001
From: Theo Buehler <tb@openbsd.org>
Date: Sat, 18 Nov 2023 10:53:09 +0100
Subject: [PATCH] Prefix some compat symbols with libressl_

See #928. This isn't a full fix, but should remove much of the friction
already.

Upstream: https://github.com/libressl/portable/pull/961/commits/0a446e81ed77c20aa87563d45ef0ef8f5fa283d8
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 include/compat/stdio.h  |  2 ++
 include/compat/stdlib.h | 10 ++++++++++
 include/compat/string.h | 11 +++++++++++
 3 files changed, 23 insertions(+)

diff --git a/include/compat/stdio.h b/include/compat/stdio.h
index d5725c9ac9..4ddd63aee1 100644
--- a/include/compat/stdio.h
+++ b/include/compat/stdio.h
@@ -20,7 +20,9 @@
 
 #ifndef HAVE_ASPRINTF
 #include <stdarg.h>
+#define vasprintf libressl_vasprintf
 int vasprintf(char **str, const char *fmt, va_list ap);
+#define asprintf libressl_asprintf
 int asprintf(char **str, const char *fmt, ...);
 #endif
 
diff --git a/include/compat/stdlib.h b/include/compat/stdlib.h
index 2eaea244c0..76dc07c35a 100644
--- a/include/compat/stdlib.h
+++ b/include/compat/stdlib.h
@@ -20,26 +20,36 @@
 #include <stdint.h>
 
 #ifndef HAVE_ARC4RANDOM_BUF
+#define arc4random libressl_arc4random
 uint32_t arc4random(void);
+#define arc4random_buf libressl_arc4random_buf
 void arc4random_buf(void *_buf, size_t n);
+#define arc4random_uniform libressl_arc4random_uniform
 uint32_t arc4random_uniform(uint32_t upper_bound);
 #endif
 
 #ifndef HAVE_FREEZERO
+#define freezero libressl_freezero
 void freezero(void *ptr, size_t sz);
 #endif
 
 #ifndef HAVE_GETPROGNAME
+#define getprogname libressl_getprogname
 const char * getprogname(void);
 #endif
 
+#ifndef HAVE_REALLOCARRAY
+#define reallocarray libressl_reallocarray
 void *reallocarray(void *, size_t, size_t);
+#endif
 
 #ifndef HAVE_RECALLOCARRAY
+#define recallocarray libressl_recallocarray
 void *recallocarray(void *, size_t, size_t, size_t);
 #endif
 
 #ifndef HAVE_STRTONUM
+#define strtonum libressl_strtonum
 long long strtonum(const char *nptr, long long minval,
 		long long maxval, const char **errstr);
 #endif
diff --git a/include/compat/string.h b/include/compat/string.h
index 4bf7519b5b..6a82793f62 100644
--- a/include/compat/string.h
+++ b/include/compat/string.h
@@ -27,43 +27,54 @@
 #endif
 
 #ifndef HAVE_STRCASECMP
+#define strcasecmp libressl_strcasecmp
 int strcasecmp(const char *s1, const char *s2);
+#define strncasecmp libressl_strncasecmp
 int strncasecmp(const char *s1, const char *s2, size_t len);
 #endif
 
 #ifndef HAVE_STRLCPY
+#define strlcpy libressl_strlcpy
 size_t strlcpy(char *dst, const char *src, size_t siz);
 #endif
 
 #ifndef HAVE_STRLCAT
+#define strlcat libressl_strlcat
 size_t strlcat(char *dst, const char *src, size_t siz);
 #endif
 
 #ifndef HAVE_STRNDUP
+#define strndup libressl_strndup
 char * strndup(const char *str, size_t maxlen);
 /* the only user of strnlen is strndup, so only build it if needed */
 #ifndef HAVE_STRNLEN
+#define strnlen libressl_strnlen
 size_t strnlen(const char *str, size_t maxlen);
 #endif
 #endif
 
 #ifndef HAVE_STRSEP
+#define strsep libressl_strsep
 char *strsep(char **stringp, const char *delim);
 #endif
 
 #ifndef HAVE_EXPLICIT_BZERO
+#define explicit_bzero libressl_explicit_bzero
 void explicit_bzero(void *, size_t);
 #endif
 
 #ifndef HAVE_TIMINGSAFE_BCMP
+#define timingsafe_bcmp libressl_timingsafe_bcmp
 int timingsafe_bcmp(const void *b1, const void *b2, size_t n);
 #endif
 
 #ifndef HAVE_TIMINGSAFE_MEMCMP
+#define timingsafe_memcmp libressl_timingsafe_memcmp
 int timingsafe_memcmp(const void *b1, const void *b2, size_t len);
 #endif
 
 #ifndef HAVE_MEMMEM
+#define memmem libressl_memmem
 void * memmem(const void *big, size_t big_len, const void *little,
 	size_t little_len);
 #endif
